package com.cherrypt.api.core.service;

import com.cherrypt.api.common.exception.TipException;

public interface RedisService {
    /**
     * 存储验证码
     *
     * @param ip      ip地址
     * @param captcha 验证码
     * @throws TipException 抛出异常
     */
    void saveCaptcha(String ip, String captcha) throws TipException;

    /**
     * 移除验证码
     *
     * @param ip ip地址
     * @return remove true
     */
    boolean removeCaptcha(String ip);

    /**
     * 验证验证码是否正确
     *
     * @param ip      ip地址
     * @param captcha 输入的验证码
     * @return true则正确
     * @throws TipException 抛出异常
     */
    boolean verifyCaptcha(String ip, String captcha) throws TipException;

    /**
     * 把该ip该api（name）的次数自动增加1
     *
     * @param ip   ip地址
     * @param name 名称，也就是api的名称，区分redis中的key
     */
    void incrIp(String ip, String name);

    /**
     * 验证该ip访问该api（name）是否超过了count次
     *
     * @param ip    ip地址
     * @param name  名称，也就是api的名称，区分redis中的key
     * @param count 次数
     * @return true则该ip访问该api超过了count次
     */
    boolean verifyIp(String ip, String name, int count);
}
